#include<iostream>
#include<vector>
using namespace std;

const int N = 1e5 + 10;

int n;
vector<int> edges[N]; // edges[i]保存着i号结点相连的所有的点
bool st[N]; // 标记该点是否已经被访问过

void dfs(int u)
{
    // 先访问该点
    cout << u << " ";
    st[u] = true; // 标记该点已经被遍历过
    // 遍历它的子树
    for(auto v : edges[u])
    {
        if(!st[v]) dfs(v);
    }
}
int main()
{
    cin >> n;
    for(int i = 1; i < n; i++)
    {
        int a, b; cin >> a >> b;
        edges[a].push_back(b);
        edges[b].push_back(a);
    }
    dfs(1);
    return 0;
}